home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ V5.02
/
MIXTREE.PAK
/
GLOBALS.H
< prev
next >
Wrap
C/C++ Source or Header
|
1997-05-06
|
13KB
|
293 lines
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (C) 1993 - 1995 Microsoft Corporation. All Rights Reserved.
//
// PURPOSE:
// Contains declarations for all globally scoped names in the program.
//
#include <commctrl.h> // TreeView and ImageList declarations live here.
//-------------------------------------------------------------------------
// Product identifier string defines
// **TODO** Change these strings to the name of your application.
#define APPNAME MixTree
#define ICONFILE MixTree.ico
#define SZAPPNAME "MixTree"
#define SZDESCRIPTION "MixTree Example Application"
#define SZABOUT "About MixTree"
#define SZVERSION "Version 4.0"
//-------------------------------------------------------------------------
// Functions for handling main window messages. The message-dispatching
// mechanism expects all message-handling functions to have the following
// prototype:
//
// LRESULT FunctionName(HWND, UINT, WPARAM, LPARAM);
// **TODO** Add message-handling function prototypes here. Be sure to
// add the function names to the main window message table in
// mixtree.c.
LRESULT MsgCommand(HWND, UINT, WPARAM, LPARAM);
LRESULT MsgDestroy(HWND, UINT, WPARAM, LPARAM);
LRESULT MsgCreate(HWND, UINT, WPARAM, LPARAM);
LRESULT MsgSize(HWND, UINT, WPARAM, LPARAM);
LRESULT MsgNotify(HWND, UINT, WPARAM, LPARAM);
LRESULT MsgPaint(HWND, UINT, WPARAM, LPARAM);
LRESULT MsgChangeBranch(HWND, UINT, WPARAM, LPARAM);
//-------------------------------------------------------------------------
// Functions for handling main window commands--ie. functions for
// processing WM_COMMAND messages based on the wParam value.
// The message-dispatching mechanism expects all command-handling
// functions to have the following prototype:
//
// LRESULT FunctionName(HWND, WORD, WORD, HWND);
// **TODO** Add message-handling function prototypes here. Be sure to
// add the function names to the main window command table in
// mixtree.c.
LRESULT CmdExit(HWND, WORD, WORD, HWND);
LRESULT CmdAbout(HWND, WORD, WORD, HWND);
LRESULT CmdFill(HWND, WORD, WORD, HWND);
LRESULT CmdDisplayAll(HWND, WORD, WORD, HWND);
LRESULT CmdCollapseAny(HWND, WORD, WORD, HWND);
//-------------------------------------------------------------------------
// Global function prototypes.
// **TODO** Add global function prototypes here.
BOOL CenterWindow(HWND, HWND); // defined in misc.c
BOOL InitApplication(HINSTANCE, int); // defined in init.c
BOOL BuildMixerTree(HWND); // defined in mixline.c
void ExpandTreeView(void); // defined in mixline.c
void ExpandBranch(HTREEITEM); // defined in mixline.c
BOOL GetItemInfo(HWND, long); // defined in mixline.c
void DisplayItemInfo(HWND, HDC); // defined in mixline.c
BOOL InitMixer(HWND); // defined in mixinfo.c
MMRESULT GetLineInfo(HWND, LPMIXERLINE, DWORD); // defined in mixinfo.c
MMRESULT GetLineControls(HWND, LPMIXERLINECONTROLS, DWORD); // defined in mixinfo.c
// Callback functions. These are called by Windows.
// **TODO** Add new callback function prototypes here.
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//-------------------------------------------------------------------------
// Command ID definitions. These definitions are used to associate menu
// items with commands.
// **TODO** Add IDs for all menu commands here. Be sure that the IDs you
// add are also added to the main window command table in generic.c
// and the menu statements in the resource file.
// File menu
#define IDM_EXIT 1000
#define IDM_FILL 1001
#define IDM_DISPLAYALL 1002
#define IDM_COLLAPSEANY 1003
// Help menu
#define IDM_ABOUT 1100
//-------------------------------------------------------------------------
// String Table ID definitions.
#define IDS_APPNAME 1
#define IDS_DESCRIPTION 2
//-------------------------------------------------------------------------
// About dialog defines.
#define IDD_VERFIRST 100
#define IDD_VERLAST 104
//-------------------------------------------------------------------------
// Global variable declarations.
extern HINSTANCE hInst; // The current instance handle
extern char szAppName[]; // The name of this application
extern char szTitle[]; // The title bar text
// **TODO** For NON-MDI applications, uncomment line 1 below and comment
// line 2. For MDI applications, uncomment line 2 below, comment
// line 1, and then define hwndMDIClient as a global variable in
// INIT.C
#define hwndMDIClient NULL /* (1) Stub for NON-MDI applications. */
// extern HWND hwndMDIClient; /* (2) For MDI applications. */
//-------------------------------------------------------------------------
// Message and command dispatch infrastructure. The following type
// definitions and functions are used by the message and command dispatching
// mechanism and do not need to be changed.
// Function pointer prototype for message handling functions.
typedef LRESULT (*PFNMSG)(HWND, UINT, WPARAM, LPARAM);
// Function pointer prototype for command handling functions.
typedef LRESULT (*PFNCMD)(HWND, WORD, WORD, HWND);
// Enumerated type used to determine which default window procedure
// should be called by the message- and command-dispatching mechanism
// if a message or command is not handled explicitly.
typedef enum
{
edwpNone, // Do not call any default procedure.
edwpWindow, // Call DefWindowProc.
edwpDialog, // Call DefDlgProc (This should be used only for
// custom dialogs - standard dialog use edwpNone).
edwpMDIChild, // Call DefMDIChildProc.
edwpMDIFrame // Call DefFrameProc.
} EDWP; // Enumeration for Default Window Procedures
// This structure maps messages to message handling functions.
typedef struct _MSD
{
UINT uMessage;
PFNMSG pfnmsg;
} MSD; // MeSsage Dispatch structure
// This structure contains all of the information that a window
// procedure passes to DispMessage in order to define the message
// dispatching behavior for the window.
typedef struct _MSDI
{
int cmsd; // Number of message dispatch structs in rgmsd
MSD *rgmsd; // Table of message dispatch structures
EDWP edwp; // Type of default window handler needed.
} MSDI, FAR *LPMSDI; // MeSsage Dipatch Information
// This structure maps command IDs to command handling functions.
typedef struct _CMD
{
WORD wCommand;
PFNCMD pfncmd;
} CMD; // CoMmand Dispatch structure
// This structure contains all of the information that a command
// message procedure passes to DispCommand in order to define the
// command dispatching behavior for the window.
typedef struct _CMDI
{
int ccmd; // Number of command dispatch structs in rgcmd
CMD *rgcmd; // Table of command dispatch structures
EDWP edwp; // Type of default window handler needed.
} CMDI, FAR *LPCMDI; // CoMmand Dispatch Information
// Message and command dispatching functions. They look up messages
// and commands in the dispatch tables and call the appropriate handler
// function.
LRESULT DispMessage(LPMSDI, HWND, UINT, WPARAM, LPARAM);
LRESULT DispCommand(LPCMDI, HWND, WPARAM, LPARAM);
// Message dispatch information for the main window
extern MSDI msdiMain;
// Command dispatch information for the main window
extern CMDI cmdiMain;
extern HMENU hMenu; // handle of application menu
extern HWND hwndTreeView; // hwnd of TreeView control
extern HFONT hfTVFont; // handle to font used in TreeView control
extern HIMAGELIST hImageList; // handle to ImageList
extern long lCurrentItem; // currently selected item in mixer list
extern HTREEITEM htiCurrentRoot; // root item of currently selected branch
extern BOOL fDisplayAll; // for View.Display All menu command
extern BOOL fCollapseAny; // for View.Collapse Any menu command
extern BOOL fExpandEnabled; // controls expansion of TreeView items
#define PM_CHANGEBRANCH WM_USER // private message used when user selects
// a new branch of the TreeView control
// when only one may be expanded at once.
// TreeView control state
#define MIXITEM_NOSELECTION -1 // No item is selected in TreeView control.
// This is a state of the control, not an
// attribute of an item in the control.
// TreeView control item attributes
#define MIXITEM_UNDEFINED 0 // TreeView item is undefined
#define MIXITEM_MIXERLINE 1 // TreeView item represents a mixer line
#define MIXITEM_MIXERCONTROL 2 // TreeView item represents a mixer control
// structure used to associate a mixer line or control with a TreeView item
typedef struct tagMIXITEMINFO {
DWORD dwItemType; // MIXITEM_MIXERLINE or MIXITEM_MIXERCONTROL
union
{
DWORD dwLineID; // line ID if MIXERLINE
DWORD dwControlID; // control ID if MIXERCONTROL
};
} MIXITEMINFO, FAR * LPMIXITEMINFO;
#define MAXMIXITEMS 100 // max number of items in TreeView control
// increase this for larger systems
extern MIXITEMINFO amixii[MAXMIXITEMS]; // array of structs for associating
// mixer lines and controls with
// TreeView items.
extern UINT uMixItems; // total number of TreeView items used
extern UINT uNumMixers; // number of mixer devices in system
extern HMIXER hMixer; // handle of mixer device
extern UINT uMixerID; // identifier for selected mixer
extern MIXERCAPS MixerCaps; // device capabilities of selected mixer
// bitmap resource id defines
#define IDB_DESTLINE 101 // mixer destination line
#define IDB_SRCLINE 102 // mixer source line
#define IDB_CUSTOM 103 // mixer custom control
#define IDB_METER 104 // mixer meter control
#define IDB_SWITCH 105 // mixer switch control
#define IDB_NUMBER 106 // mixer number control
#define IDB_SLIDER 107 // mixer slider control
#define IDB_FADER 108 // mixer fader control
#define IDB_TIME 109 // mixer time control
#define IDB_LIST 110 // mixer list control
// image list defines
#define IL_DESTLINE 0 // mixer destination line
#define IL_SRCLINE 1 // mixer source line
#define IL_CUSTOM 2 // mixer custom control
#define IL_METER 3 // mixer meter control
#define IL_SWITCH 4 // mixer switch control
#define IL_NUMBER 5 // mixer number control
#define IL_SLIDER 6 // mixer slider control
#define IL_FADER 7 // mixer fader control
#define IL_TIME 8 // mixer time control
#define IL_LIST 9 // mixer list control
#define IL_MAXIMAGES 10 // max number of images in image list
// structure for associating a bitmap with an index in the image list
typedef struct tagIMAGELISTINFO {
UINT uBitmapID; // bitmap resource ID
UINT uImageIndex; // index of image in the image list
} IMAGELISTINFO, FAR * LPIMAGELISTINFO;
extern IMAGELISTINFO aImageInfo[IL_MAXIMAGES]; // info for entire image list
//-------------------------------------------------------------------------
// Version string definitions--Leave these alone.
#define SZRCOMPANYNAME "CompanyName"
#define SZRDESCRIPTION "FileDescription"
#define SZRVERSION "FileVersion"
#define SZRAPPNAME "InternalName"
#define SZRCOPYRIGHT "LegalCopyright"
#define SZRTRADEMARK "LegalTrademarks"
#define SZRPRODNAME "ProductName"
#define SZRPRODVER "ProuctVersion"